package com.hbk.context.controller;


import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.hbk.commom.utils.R;
import com.hbk.context.entity.BlBlog;
import com.hbk.context.entity.vo.BlogListVO;
import com.hbk.context.service.BlBlogService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * <p>
 * 博客表 前端控制器
 * </p>
 *
 * @author 嘟嘟爱萌喵
 * @since 2021-04-11
 */
@Api(description = "博客管理")
@RestController
@RequestMapping("/context/blog")
@CrossOrigin
public class BlBlogController {
    @Autowired
    BlBlogService blogService;
    /**
     *  发布博客
     */
   // @Transactional //事务回滚
    @PostMapping("saveBlog")
    public R saveBlog(@RequestBody BlBlog blog){//通过@requestBody可以将请求体中的JSON字符串绑定到相应的bean上
        //@ResponseBody 返回json数据，而不是页面跳转

        boolean b = blogService.save(blog);
        return b? R.ok():R.error();

    }
    /**
     * 删除博客
     */
    @ApiOperation(value = "删除博客")
    @DeleteMapping("delete/{id}")
    public R delete(@PathVariable("id")String id){//接收请求路径中占位符的值
        blogService.removeById(id);
        return R.ok();

    }
/**
 * 查询所有博客
 */
    @GetMapping("list")
    public R list(){
        List<BlBlog> list = blogService.list();
        return R.ok().data("data",list);
    }
    /**
     * 查询条件的、分页的查询
     */
    @PostMapping("listPage/{current}/{size}")
    public R listPage(@PathVariable("current") Integer current,
                      @PathVariable("size") Integer size,
                      @RequestBody(required = false) BlogListVO vo){
//        new 一个分页对象
        Page<BlBlog> page = new Page<>(current,size);
//        new一个条件构造器
        QueryWrapper<BlBlog> wrapper = new QueryWrapper<>();

        if(vo == null){
            blogService.page(page);
        }else {
            //        构造条件
            if(!StringUtils.isEmpty(vo.getBlogTitle())){
                wrapper.like("blog_title",vo.getBlogTitle());
            }
            if(!StringUtils.isEmpty(vo.getBlogType())){
                wrapper.eq("blog_type",vo.getBlogType());
            }
           /* if(!StringUtils.isEmpty(vo.getBegin()) && !StringUtils.isEmpty(vo.getEnd()) ){
                wrapper.between("gmt_create",vo.getBegin(),vo.getEnd());
            }*/
            if (!StringUtils.isEmpty(vo.getBegin())){
                wrapper.gt("gmt_create",vo.getBegin());
            }
            if (!StringUtils.isEmpty(vo.getEnd())){
                wrapper.lt("gmt_create",vo.getEnd());
            }
            blogService.page(page,wrapper);
        }

        List<BlBlog> records = page.getRecords();
        long total = page.getTotal();
        return R.ok().data("data",records).data("total",total);
    }
/**
 * 根据id查询博客内容
 */
    @GetMapping("selectOne/{id}")
        public R selectOne(@PathVariable("id") String id){
        BlBlog blog = blogService.getById(id);
        return R.ok().data("data",blog);
    }
    /**
     * 更新博客内容
     */
    @PostMapping ("update")
    public R update(@RequestBody BlBlog blog){

        return blogService.updateById(blog) ?
                R.ok().message("修改成功！") : R.error().message("修改失败！");
    }
}

